package com.binhu;

import com.binhu.entity.BinhuObj;
import org.apache.poi.xslf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ShangHui {

    //#region -----废弃-----
    public void getPPTcl(BinhuObj binhuObj){
        // 文件路径
        String inputFilePath = "D:\\code\\Projects\\yidong\\src\\main\\java\\com\\binhucfg\\上会材料\\ppt模板.pptx";
        String outputFilePath = "D:\\code\\Projects\\yidong\\src\\main\\java\\com\\binhucfg\\集团客户部、滨湖：关于项目的汇.pptx";

        try (XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(inputFilePath))) {
            // 遍历每一张幻灯片
            for (XSLFSlide slide : pptx.getSlides()) {
                // 遍历幻灯片中的每个形状
                for (XSLFShape shape : slide.getShapes()) {
                    // 检查形状是否是文本形状
                    if (shape instanceof XSLFTextShape) {
                        XSLFTextShape textShape = (XSLFTextShape) shape;
                        // 遍历形状中的每个文本段落
                        for (XSLFTextParagraph paragraph : textShape.getTextParagraphs()) {
                            StringBuilder fullText = new StringBuilder();
                            // 合并所有文本段落的文本内容
                            for (XSLFTextRun textRun : paragraph.getTextRuns()) {
                                fullText.append(textRun.getRawText());
                            }

                            String combinedText = fullText.toString();

                            // 查找目标文本进行替换
                            if (combinedText.contains("%项目名称%")) {
                                String newText = combinedText.replace("%项目名称%", "我的妈");

                                // 清除段落中的所有文本运行
                                for (XSLFTextRun textRun : paragraph.getTextRuns()) {
                                    textRun.setText("");
                                }

                                // 设置替换后的新文本
                                XSLFTextRun newTextRun = paragraph.addNewTextRun();
                                newTextRun.setText(newText);
                            }
                        }
                    }
                }
            }

            // 将修改后的PPTX文件保存到新文件
            try (FileOutputStream out = new FileOutputStream(outputFilePath)) {
                pptx.write(out);
            }

            System.out.println("替换完成，文件已保存为 " + outputFilePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //#endregion

    public String yi(String s){
        return "易" + s + "易";
    }

    public void getPPT(BinhuObj binhuObj){
        // 文件路径
        String inputFilePath = "D:\\code\\Projects\\yidong\\src\\main\\java\\com\\binhucfg\\上会材料\\ppt模板.pptx";
        String outputFilePath = "D:\\code\\Projects\\yidong\\src\\main\\java\\com\\binhucfg\\集团客户部、滨湖：关于"+ binhuObj.getXmmc() +"项目的汇报.pptx";

        try (XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(inputFilePath))) {
            // 遍历每一张幻灯片
            for (XSLFSlide slide : pptx.getSlides()) {
                // 遍历幻灯片中的每个形状
                for (XSLFShape shape : slide.getShapes()) {

                    // 检查形状是否是表格
                    if (shape instanceof XSLFTable) {
                        XSLFTable table = (XSLFTable) shape;
                        // 遍历表格中的每一行
                        for (XSLFTableRow row : table.getRows()) {
                            // 遍历行中的每个单元格
                            for (XSLFTableCell cell : row.getCells()) {
                                for (XSLFTextParagraph paragraph : cell.getTextParagraphs()) {
                                    // 遍历单元格中的每个文本片段
                                    for (XSLFTextRun textRun : paragraph.getTextRuns()) {
                                        String text = textRun.getRawText();
                                        System.out.println(text);
                                        // 替换文本
                                        text = replaceTextPPT(text, binhuObj);
                                        textRun.setText(text);
                                    }
                                }
                            }
                        }
                    }

                    // 检查形状是否是文本形状
                    if (shape instanceof XSLFTextShape) {
                        XSLFTextShape textShape = (XSLFTextShape) shape;
                        // 遍历形状中的每个文本段落
                        for (XSLFTextParagraph paragraph : textShape.getTextParagraphs()) {
                            // 遍历段落中的每个文本片段
                            for (XSLFTextRun textRun : paragraph.getTextRuns()) {
                                String text = textRun.getRawText();
//                                System.out.println(text);
                                text = replaceTextPPT(text,binhuObj);
                                textRun.setText(text);

                            }
                        }
                    }
                }
            }

            // 将修改后的PPTX文件保存到新文件
            try (FileOutputStream out = new FileOutputStream(outputFilePath)) {
                pptx.write(out);
            }

            System.out.println("替换完成，文件已保存为 " + outputFilePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String replaceTextPPT(String text,BinhuObj binhuObj){
        // 替换文本
        text = text.replace(yi("项目名称") , binhuObj.getXmmc());
        text = text.replace(yi("年月") , binhuObj.getRqny());
        text = text.replace(yi("上会类别") , binhuObj.getShlb());
        text = text.replace(yi("归类费用") , binhuObj.getGlfy());
        text = text.replace(yi("项目预算") , binhuObj.getXmys());
        text = text.replace(yi("建设单位") , binhuObj.getJsdw());
        text = text.replace(yi("招标方式") , binhuObj.getCgfs());
        text = text.replace(yi("签约模式") , binhuObj.getQyms());
        text = text.replace(yi("商务模式") , binhuObj.getSwms());
        text = text.replace(yi("企业基本情况") , binhuObj.getQyjbqk());
        text = text.replace(yi("建设内容") , binhuObj.getJsnr());
        text = text.replace(yi("收款方式") , binhuObj.getSkfs());
        text = text.replace(yi("付款方式") , binhuObj.getFkfs());

        text = text.replace(yi("前向收入") , binhuObj.getQxsr());
        text = text.replace(yi("集成收入") , binhuObj.getJcsr());

        text = text.replace(yi("后向支出") , binhuObj.getHxzc());
        text = text.replace(yi("集成支出") , binhuObj.getJczc());

        text = text.replace(yi("挨踢净现值率") , binhuObj.getItjxzl());
        text = text.replace(yi("挨踢毛利率") , binhuObj.getItmll());

        text = text.replace(yi("整体净现值") , binhuObj.getZtjxz());
        text = text.replace(yi("整体净现值率") , binhuObj.getZtjxzl());
        text = text.replace(yi("整体毛利率") , binhuObj.getZtmll());

        text = text.replace(yi("主营收占比") , binhuObj.getZyszb());


        return text;
    }


}
